package com.pb.wkflow.api.mapper;

import com.pb.wkflow.api.entity.*;
import com.pb.wkflow.core.entity.PostInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 苗益辉
 * @date 2022/9/22 9:40
 */
@Mapper
@Repository
public interface ParticipantMapper {

    /**
     * 参与者类型-用户
     * @param keyword 查询条件
     * @param cropId 法人
     * @return List
     */
    List<ParticipantUserEntity> findUserList(@Param("keyword") String keyword, @Param("cropId") String cropId);

    /**
     * 参与者类型-组织
     * @param cropId 法人
     * @return List
     */
    List<ParticipantStructEntity> findStructList(@Param("cropId") String cropId);

    /**
     * 参与者类型-岗位
     * @param postName 岗位名称
     * @param cropId 法人
     * @return List
     */
    List<ParticipantPostEntity> findPostList(@Param("postName") String postName, @Param("cropId") String cropId);

    /**
     * 参与者类型-角色
     * @param roleName 角色名称
     * @param cropId 法人
     * @return List
     */
    List<ParticipantRoleEntity> findRoleList(@Param("roleName") String roleName, @Param("cropId") String cropId);

    /**
     * 根据postInfo 查询用户名称
     * @param postInfos postInfos
     * @return List<ParticipantUserEntity>
     */
    List<ParticipantUserEntity> findUserByParticipants(@Param("postInfos") List<PostInfo> postInfos);

    /**
     * findNextParticipants
     * @param procInstId 流程实例id
     * @param applyTypes 申请类型列表
     * @return List<ParticipantUserEntity>
     */
    List<NextParticipantEntity> findNextParticipants(@Param("procInstId") String procInstId,
                                                     @Param("applyTypes") List<String> applyTypes);
}
